<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>精确值 VS 全文 | Elasticsearch: 权威指南 | Elastic</title>
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
</head>
<body>
<div class="main-container">
    <section id="content">
        
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原文地址: <a href="https://www.elastic.co/guide/cn/elasticsearch/guide/current/_exact_values_versus_full_text.html" rel="nofollow">https://www.elastic.co/guide/cn/elasticsearch/guide/current/_exact_values_versus_full_text.html</a>, 版权归 www.elastic.co 所有<br/>
                            英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/guide/current/_exact_values_versus_full_text.html" rel="nofollow">https://www.elastic.co/guide/en/elasticsearch/guide/current/_exact_values_versus_full_text.html</a>
                            </div>
                        <!-- start body -->
                  <div class="page_header">
<b>请注意:</b><br>本书基于 Elasticsearch 2.x 版本，有些内容可能已经过时。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch: 权威指南</a></span>
»
<span class="breadcrumb-link"><a href="getting-started.html">基础入门</a></span>
»
<span class="breadcrumb-link"><a href="mapping-analysis.html">映射和分析</a></span>
»
<span class="breadcrumb-node">精确值 VS 全文</span>
</div>
<div class="navheader">
<span class="prev">
<a href="mapping-analysis.html">« 映射和分析</a>
</span>
<span class="next">
<a href="inverted-index.html">倒排索引 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="_exact_values_versus_full_text"></a>精确值 VS 全文<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elasticsearch-cn/elasticsearch-definitive-guide/edit/cn/052_Mapping_Analysis/30_Exact_vs_full_text.asciidoc">edit</a>
</h2>
</div></div></div>
<p>Elasticsearch 中的数据可以概括的分为两类：精确值和全文。</p>
<p><em>精确值</em> 如它们听起来那样精确。例如日期或者用户 ID，但字符串也可以表示精确值，例如用户名或邮箱地址。对于精确值来讲，<code class="literal">Foo</code> 和 <code class="literal">foo</code> 是不同的，<code class="literal">2014</code> 和 <code class="literal">2014-09-15</code> 也是不同的。</p>
<p>另一方面，<em>全文</em> 是指文本数据（通常以人类容易识别的语言书写），例如一个推文的内容或一封邮件的内容。</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>全文通常是指非结构化的数据，但这里有一个误解：自然语言是高度结构化的。问题在于自然语言的规则是复杂的，导致计算机难以正确解析。例如，考虑这条语句：</p>
<pre class="literallayout">May is fun but June bores me.</pre>

<p>它指的是月份还是人？</p>
</div>
</div>
<p>精确值很容易查询。结果是二进制的：要么匹配查询，要么不匹配。这种查询很容易用 SQL 表示：</p>
<div class="pre_wrapper lang-js">
<pre class="programlisting prettyprint lang-js">WHERE name    = "John Smith"
  AND user_id = 2
  AND date    &gt; "2014-09-15"</pre>
</div>
<p>查询全文数据要微妙的多。我们问的不只是“这个文档匹配查询吗”，而是“该文档匹配查询的程度有多大？”换句话说，该文档与给定查询的相关性如何？</p>
<p>我们很少对全文类型的域做精确匹配。相反，我们希望在文本类型的域中搜索。不仅如此，我们还希望搜索能够理解我们的 <em>意图</em> ：</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
搜索 <code class="literal">UK</code> ，会返回包含 <code class="literal">United Kindom</code> 的文档。
</li>
<li class="listitem">
搜索 <code class="literal">jump</code> ，会匹配 <code class="literal">jumped</code> ， <code class="literal">jumps</code> ， <code class="literal">jumping</code> ，甚至是 <code class="literal">leap</code> 。
</li>
<li class="listitem">
搜索 <code class="literal">johnny walker</code> 会匹配 <code class="literal">Johnnie Walker</code> ， <code class="literal">johnnie depp</code> 应该匹配 <code class="literal">Johnny Depp</code> 。
</li>
<li class="listitem">
<code class="literal">fox news hunting</code> 应该返回福克斯新闻（ Foxs News ）中关于狩猎的故事，同时， <code class="literal">fox hunting news</code> 应该返回关于猎狐的故事。
</li>
</ul>
</div>
<p>为了促进这类在全文域中的查询，Elasticsearch 首先 <em>分析</em> 文档，之后根据结果创建 <em>倒排索引</em> 。在接下来的两节，我们会讨论倒排索引和分析过程。</p>
</div>
<div class="navfooter">
<span class="prev">
<a href="mapping-analysis.html">« 映射和分析</a>
</span>
<span class="next">
<a href="inverted-index.html">倒排索引 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>